package com.uatair.web.controller.business;

import com.uatair.common.core.controller.BaseController;
import com.uatair.common.core.domain.AjaxResult;
import com.uatair.common.kafka.domain.protobuf.FlightProto;
import com.uatair.common.utils.uuid.UUID;
import com.uatair.common.service.DroneDataService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * 无人机数据控制器
 */
@RestController
@RequestMapping("/kafka/drone")
public class DroneDataController extends BaseController {

    @Autowired
    private DroneDataService droneDataService;

    /**
     * 发送飞行记录到Kafka
     * @param
     * @return 操作结果
     */
    @PostMapping("/send")
    public AjaxResult sendFlightRecord() {
        FlightProto.FlightRecord record = FlightProto.FlightRecord.newBuilder()
                // 1. 基础信息
                .setUuid(UUID.randomUUID().toString())
                .setCreatedAt(System.currentTimeMillis())
                .setUpdatedAt(System.currentTimeMillis())
                // 3. 航点数据下载地址
                .setDetailUrl("http://**.**.**/flight-details/" + UUID.randomUUID())
                // 4. 时间信息
                .setCollectTime(System.currentTimeMillis())
                .setWorkTime(600000) // 1小时（毫秒）
                .setBeginTimestamp(System.currentTimeMillis() - 600000)
                .setEndTimestamp(System.currentTimeMillis())
                // 5. 位置信息
                .setLocation("广东省深圳市龙岗区园山街道")
                .setProvince("广东省")
                .setCity("深圳市")
                .setDistrict("龙岗区")
                .setTown("园山街道")
                .setPosition(FlightProto.Position.newBuilder()
                        .setLatitude(22.65647602)
                        .setLongitude(114.22817319)
                        .build())
                // 6. 作业参数
                .setWorkArea(15.5f) // 150.5亩（单位0.01亩）
                .setUsageType(0) // 0:喷洒
                .setSprayUsage(5000) // 5000ml
                .setSowUsage(0) // 0g
                // 7. 飞机信息
                .setDroneType("Q100")
                .setHardwareId("61253722311E")
                .setBodyCode("61253722311E")
                .setFactorySn("61253722311E")
                .setCompanyCode("LHFJ")
                .setBdIdentification("Y")
                .setUavMode("Q100")
                .setUavType(0) // 0:多旋翼
                .build();
        // 发送测试
        boolean sent = droneDataService.sendFlightRecord(record);
        return success("飞行记录已发送：" + sent);
    }
}